package com.test.lock;

public class FinalReferenceEscapeExample {
    final int i;
    static FinalReferenceEscapeExample obj;

    public FinalReferenceEscapeExample() {
        i = 1; // 1 写final域
        obj = this; // 2 this引用在此“逸出”
    }

    public static void writer() { // 线程A执行
        new FinalReferenceEscapeExample();
    }

    public static void reader() { // 线程B执行
        if (obj != null) {
            int temp = obj.i; // 4
        }
    }
}
